#ifndef MotAsp_Mgr_MGR_H
#define MotAsp_Mgr_MGR_H
/****************************************************************************
 *Copyright(C),2024, Ningbo Tuopu Group Co., Ltd.
 *FileName:   MotAsp_Mgr_Mgr_I.h
 *Date:       2024-12-16 19:03:04
 *Author:     TianGui.Wang
 *Version:    0
 *Path:       
 *Description:
 ****************************************************************************/
/****************************************************************************/
/*                             Include area                                 */
/****************************************************************************/
#include "MotAsp/MotAsp_Type.h"
#include "MotAsp/MotAsp_Lib.h"
#include "MotAsp/MotAsp_Cfg.h"
#include "MotAsp/MotAsp_DiagCbk.h"
/****************************************************************************/
/*                             Definition area                              */
/****************************************************************************/

/****************************************************************************/
/*                             Typedef area                                 */
/****************************************************************************/


/******************************************************* Mgr ************************************************** */
typedef enum
{
    MotAsp_Idle = 0U,
    MotAsp_Start,
}MotAsp_State;

typedef struct
{
    MotAsp_Lib_MPS_STAUTS MPS;
    MotAsp_Type_VIRTUAL_CALC_STRUCT Open;
    MotAsp_Type_LEARN_E_ANGLE_STRUCT Learn_E;
    MotAsp_Type_LEARN_P_ANGLE_STRUCT Learn_P;
    MotAsp_Type_SPD_SIMPLE_STRUCT Spd_Simp;
    MotAsp_Type_SPD_CALC_STRUCT Spd_Calc;
    MotAsp_Type_ABS_POS_CALC_STRUCT P_Abs;
    MotAsp_Type_ABS_POS_CALC_STRUCT P_Rel;
} MotAsp_Mgr_PriType;

typedef struct
{
    struct
    {
        MotAsp_Base_SMode_t Mode;
        MotAsp_Base_STrig_t CalOffsetAngle_RiseTrig;
        MotAsp_Base_STrig_t CalOffsetPos_RiseTrig;
        int16_T VirSpdRpm;
        MotAsp_Base_CAStep_t CAStep;
    } Ctrl;
    struct
    {
        uint16_T ADC_SinP;
        uint16_T ADC_SinN;
        uint16_T ADC_CosP;
        uint16_T ADC_CosN;
    } Pie;
    struct {
        uint8_T En;
        MotAsp_Type_Variable_State_U16 E;
        MotAsp_Type_Variable_State_U16 M;
        MotAsp_Type_Variable_State_S32 P;
        int32_T Rst_P;
    }NvM;
} MotAsp_Mgr_InType;

typedef struct
{
     struct
    {
        MotAsp_Base_Valid_t eAngleSta;
        uint16_T eAngle;
    } Drv;
    struct
    {
        MotAsp_Base_AspMcs_t Sta;
        uint16_T ErrCode;
        int16_T SpdRpm;
        MotAsp_Base_Valid_t mAngleSta;
        uint16_T mAngle;
        int32_T PosRel_01mm;
        MotAsp_Base_Valid_t PosRel_Sta;
        int32_T PosAbs_01mm;
        MotAsp_Base_Valid_t PosAbs_Sta;
    } Ctrl;
    struct {
        MotAsp_Type_Variable_State_U16 E;
        MotAsp_Type_Variable_State_U16 M;
        MotAsp_Type_Variable_State_S32 P;
        int32_T Rst_P;
    }NvM;
} MotAsp_Mgr_OutType;

typedef struct
{
    uint8_T Init_Sig;
    MotAsp_State Sta;
    MotAsp_Mgr_InType    In;
    MotAsp_Mgr_OutType   Out;
    MotAsp_Mgr_PriType   Pri;
} MotAsp_Mgr_ObjType;

/******************************************************* Mgr ************************************************** */
/****************************************************************************/
/*                             Local data at RAM                            */
/****************************************************************************/

/****************************************************************************/
/*                             Global data at RAM                           */
/****************************************************************************/

/****************************************************************************/
/*                        Global data at RAM declare area                   */
/****************************************************************************/

/****************************************************************************/
/*                             Local data at ROM                            */
/****************************************************************************/

/****************************************************************************/
/*                             Global data at ROM                           */
/****************************************************************************/

/****************************************************************************/
/*                        Global data at ROM declare area                   */
/****************************************************************************/

/****************************************************************************/
/*                        Local function declare area                       */
/****************************************************************************/

/****************************************************************************/
/*                        Global function declare area                      */
/****************************************************************************/
extern MotAsp_Mgr_ObjType MotAsp;


extern void MotAsp_Mgr_Init(MotAsp_Mgr_ObjType *MotAsp);

extern void MotAsp_Mgr_Angle_Handler(MotAsp_Mgr_ObjType *MotAsp);

extern void MotAsp_Mgr_Spd_Pos_Handler(MotAsp_Mgr_ObjType *MotAsp);

#endif
